The field of the present disclosure relates to systems and methods for optical bar code scanning and decoding technology, implemented in software. Labels bearing identification, pricing, product, or inventory information in an optical code format are commonly affixed to items for use in applications such as retail (sales inventory, pricing, checkout) and manufacturing (product movement through manufacturing lines and warehouses, capital inventory). Symbolic labels encode in a variety of formats information that uniquely identifies the item. An example of a symbolic label is an optical bar code label, comprising a series of parallel dark bars of varying widths with intervening light spaces, also of varying widths. Alpha-numeric characters are encoded in the labels by the specific sequence of bars and spaces with groupings of bars and spaces representing the character information. In addition to data characters, many labels utilize feature characters, such as center or guard characters, which are used as delimiters to separate segments of a label.
The precise nature of the representation depends on the particular bar code symbology in use. A common symbology is the Universal Product Code (UPC) label in which each character is made up of two bars and two interleaved spaces. The width of each character is measured in units called “modules” with each character being seven modules wide. The width of any particular bar or space within the character representation is between one and four modules. The character value depends on the relative width in modules of the two bars and two spaces it comprises. For example, indicating bars with a 1 and spaces with a 0, a sequence of 111 would represent a bar that is three modules wide. The character value 5 may be represented as 0110001, i.e., a one-module wide space, a two-module bar, a three-module space, and a one-module bar, respectively.
There are many variations of the UPC label symbology: UPC-A, UPC-E, etc. In addition to UPC formats, there exist other label formats that vary according to structure, content, parity requirements, and types of feature characters, among other attributes. Code 39 and Code 128, for example, are categorized as non-segmented label formats, i.e., they have no center feature characters separating two or more segments of bars. Many new label encoding schemes have been developed which have differing pattern structures for the dark and light areas. Examples of these recent code types are stacked bar code formats such as Code 49, PDF 417, and 2D/matrix codes such as Maxicode and Data Matrix code.
Optical scanning systems use various devices and methods for the purpose of sensing symbolic labels, identifying the particular label format, decoding the data stored in the label, and transmitting it electronically to a host computer such as a remote centralized tracking system, or a local point-of-sale (POS) terminal. Common types of bar code readers include spot scanners and line scanners, which may be fixed or hand-held. When using a fixed scanner, items are passed, either manually or automatically, through a designated spatial “read volume” to intercept a laser beam. When using a hand-held scanner, a human operator manually aims the laser beam at the bar code and pulls a trigger to activate a “read.” The path along which the illuminating laser beam is directed is typically referred to as a “scan line.” A photodetector monitors the light reflected or back-scattered from the bar code pattern sensed along each scan line. The photodetector may generate a current that is proportional to the intensity of the reflected light, so that a high current indicates a space and a low current indicates a bar. A collection subsystem converts optical information gathered by the photodetector into an electronic signal that may be recognized by a computer or other electronic system.
Recovering information from optical bar code labels poses many difficulties that must be overcome by the scanning system. For example, there may be many scans executed along different or repeated scan lines for each successful “read” that is reported to the host computer. To read a complete label in a single optical pass, the label must be properly oriented with respect to the scanning beam. Early scanners depended upon individual scan lines extending across the entire bar code for it to be successfully captured. Failure to read in a single pass used to require the item to be re-positioned and re-scanned until a successful read was obtained. These systems presented difficulties and inefficiencies in real-time, practical applications in which the orientation of the bar code with respect to the scanner is difficult to control.
Even if a label is not captured completely in a single scan, multiple scans of the label generated from an omnidirectional scanning system typically provide some partial label information in each of multiple scan lines. Present systems incorporate specialized piecing mechanisms, comprising software or electronics, that have been developed and are capable of sensing portions of bar codes and “stitching” them into a complete code. Details regarding exemplary stitching methods and systems may be found in U.S. Pat. No. 5,493,108, entitled “Method and Apparatus for Recognizing and Assembling Optical Code Labels” and hereby incorporated by reference. When a complete code is obtained, the scanner emits a characteristic audible tone (e.g., “beep”), indicating a successful read of the bar code data, which is then reported to a host computer.
Detection of identical bar code data in two or more sequential reads may indicate intentional presentation of multiples of a similar item, or it may indicate a double-read error (i.e., erroneous duplicate) of the same item. For example, if a scanner operator hesitates while scanning an item, the scanned bar code may accidentally register twice. In the case of a double-read error, sequential detections occur in rapid succession. Some retail checkout scanners therefore include a fixed delay timer, in communication with the system processor, that prevents multiple reporting of the bar code data to the host computer. One such fixed delay timer system is included in the QuickScan® scanner, available from Datalogic Scanning, Inc. of Eugene, Oreg. An alternate double read prevention scheme entails a comparison of spatial coordinates of the corners of bar code symbols read in succession, rather than decoded alphanumeric characters represented by the bar codes themselves, such as disclosed in U.S. Pat. No. 5,365,048.
A duplicate reporting prevention scheme employing a fixed-delay programmable timer is activated each time a scanner correctly reads and decodes a bar code label on an item. Upon activation, the timer is initialized to a designated fixed delay time, typically in the range of about 0.1-1 second, and begins decrementing to zero. A set of decoded label data corresponding to the bar code label is retained in a memory cell as long as the timer is active. When the timer expires, the memory cell is cleared. If the timer expires before an identical bar code is encountered at the scanner, the next bar code read is assumed to represent a distinctly separate merchandise item, and a second set of data is intentionally reported to the host computer. If an identical bar code is read within the “double read timeout” (DRT) period before the timer expires, the identical data is determined to be duplicative, and it is therefore discarded and not reported to the host computer a second time. Use of a fixed delay timer thus provides “single label double read” protection. It is noted that, in the above examples, double read protection is based on the single set of bar code data that directly precedes a particular read event.
The above logic is diagrammed in a flowchart shown in FIG. 1, which illustrates a software implementation of a decision sequence for an existing single label double read protection scheme. With reference to FIG. 1, an item is first placed within the read zone of an optical scanner in process block 110. The scanner proceeds in process block 115 to read and decode a bar code label affixed to the item, thereby producing decoded label data. Next, decision block 120 determines whether a countdown timer is running, by checking the timer to see whether the designated delay time for the previous read event has expired. If the timer is active (i.e., still decrementing, or not expired) then the new decoded label data is checked at decision block 123, to determine whether the label just read matches the saved data by comparing the label just read against the stored data from the previous read event. If the data matches, the decoded label data is considered duplicative and is therefore discarded, and the countdown timer is restarted. If there is no match, the decoded label data is determined to be legitimate. Proceeding to process block 125, the data is saved in the first empty memory slot and the countdown timer is restarted. The decoded label data is then reported, via process block 130, by sending the label data to a host computer, or POS terminal 132.
The present inventors have recognized that the prior systems have limitations In versatility and thus can be improved upon.